//
// Created by Jisam on 11/10/2024 21:10.
// Solution of   sum
//#pragma GCC optimize(3)
#include <bits/stdc++.h>

#define int long long
using namespace std;
#define endl "\n"
#define PII pair<int,int>
#define VVI vector<vector<int>>
#define VI vector<int>
#define code_by_jisam cin.tie(nullptr)->sync_with_stdio(false);
int dx[] = {-1, 1, 0, 0, 1, 1, -1, -1,};
int dy[] = {0, 0, -1, 1, 1, -1, -1, 1,};
const double pi = acos(-1);
const int x = 10000;
// 解决方案函数，用于计算使数组元素和接近给定值sum的最少操作次数
void solution() {
    int sum, ans = 0, n;
    // 输入数组大小n和目标和sum
    cin >> n >> sum;

    // 初始化数组a，用于存储n个整数
    vector<int> a(n);

    // 输入数组元素，并计算当前和ans
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        ans += a[i];
    }

    // 初始化操作次数为0
    int num = 0;

    // 如果当前和大于目标和sum
    if (ans > sum) {
        // 通过减小数组元素，使和接近sum
        while (ans > sum) {
            // 这里假设减去一个元素后加上一个固定值x，逻辑根据实际需求调整
            ans = ans - a[n--] - x;
            num++;
        }
    } else if (ans < sum) {
        // 如果当前和小于目标和sum
        int i = 1;
        // 通过增大数组元素，使和接近sum
        while (ans < sum) {
            // 这里假设减去一个元素后加上一个固定值x，逻辑根据实际需求调整
            ans = ans - a[i++] + x;
            num++;
        }
    }

    // 输出操作次数
    cout << num << endl;
}


signed main() {
    code_by_jisam;
    int T = 1;
    cin >> T;
    while (T--) {
        solution();
    }
    return 0;
}